package com.qing.design.patterns.factory_method.example;

import com.qing.design.patterns.factory_method.example.factory.Dialog;
import com.qing.design.patterns.factory_method.example.factory.HtmlDialog;
import com.qing.design.patterns.factory_method.example.factory.WindowsDialog;

public class Demo {
	private static Dialog dialog;

	public static void main(String[] args) {
		System.out.println("环境："+System.getProperty("os.name"));
		configure();
		runBusinessLogic();
	}

	/**
	 * 工厂的选择通常取决于配置或环境选项。
	 * //TODO 可以将该方法放入dialog.renderWindow();中实现
	 */
	static  void configure(){
		if(System.getProperty("os.name").equalsIgnoreCase("Windows 10")){
			dialog=new WindowsDialog();
		}else {
			dialog=new HtmlDialog();
		}
	}

	/**
	 * 所有的客户端代码都应该通过
	 * *抽象接口。这样一来，它就不在乎在哪家工厂工作了
	 * *用什么样的产品退货。
	 */
	static void runBusinessLogic(){
		dialog.renderWindow();
	}
}
